FastReport - tisk DBGridu

Otázka od: Jaroslav Uher

16. 4. 2004 15:14

Ahoj,

nedari se mi napojeni TfrPrintGrid na vlastni Preview

 PrintGrid1.BuildReport;
 PrintGrid1.Preview := FormPrintPreviewFR.frPreview;
 FormPrintPreviewFR.ShowModal;

se zobrazi prazdny.

Muze, prosim nekdo poradit ?

Diky,

preji hezky den

Jarek Uher



Odpovedá: Miso

16. 4. 2004 15:14


----- Original Message -----
From: "Jaroslav Uher" <jarek@iuher.cz>

> nedari se mi napojeni TfrPrintGrid na vlastni Preview
>
> PrintGrid1.BuildReport;
> PrintGrid1.Preview := FormPrintPreviewFR.frPreview;
> FormPrintPreviewFR.ShowModal;
>

..najskor ti tam asi chyba PrintGrid1.ShowReport..
..vzorovu pokusnu aplikaciu ti posielam na sukromny mail
Miso

Odpovedá: Jaroslav Uher

16. 4. 2004 15:53

On 16 Apr 2004 at 15:21, Miso wrote:

> > nedari se mi napojeni TfrPrintGrid na vlastni Preview
> >
> > PrintGrid1.BuildReport;
> > PrintGrid1.Preview := FormPrintPreviewFR.frPreview;
> > FormPrintPreviewFR.ShowModal;
 
> ..najskor ti tam asi chyba PrintGrid1.ShowReport..
> ..vzorovu pokusnu aplikaciu ti posielam na sukromny mail

diky, ale to ja umim, dva roky jsem delal s FreeReportem.
Ja potrebuji dynamicky tiskout z libovolneho DBGridu pole, ktere si
uzivatel predtim vybere. Nechci na kazdou sestavu tvorit report
rucne. Pole mohou byt 3, ale take 30.

V FreeReportu to nebyl az takovy problem, stacilo v Designeru polozit
BandCrossData, MasterHeader, MasterData a v

procedure TFormPrintDBGrid.frReport1PrintColumn(ColNo: Integer;
  var Width: Integer);
begin
// ColNo zacina 1
   if CheckListBox.Checked[ColNo -1] // jen zvolene sloupce
    then Width := DBGridPrn.Columns[ColNo -1].Width +
(Canvas.TextWidth('0'))
    else Width := 0;
    FWidth := Width;
end;

si nastavit potrebnou sirku sloupcu

a tady ji aplikovat
procedure TFormPrintDBGrid.frReport1EnterRect(Memo: TStringList;
  View: TfrView);
begin
   if Memo[0] = '[Header]' then // je pro DBGrid
    begin
      View.dx := FWidth;
      if PrintFrame // tisk ramecku
       then View.FrameTyp := frftRight + frftBottom + frftLeft +
frftTop // full frame
       else View.FrameTyp := 0; // no frame
    end;
   if Memo[0] = '[Cell]' then // je pro DBGrid
    begin
      View.dx := FWidth;
      if PrintFrame // tisk ramecku
       then View.FrameTyp := frftRight + frftBottom + frftLeft +
frftTop // full frame
       else View.FrameTyp := 0; // no frame
    end;
end;

Bohuzel ve FastReportu mi View.dx := FWidth vubec nereaguje a
View.FrameTyp take NE.

Ve FastReportu jsem nasel komponenu TfrPrintGrid, ktera vse umi
SUPER, jen mi odmita presmerovani na vlastni Preview, a data se
zobrazi jen na jejich Preview (PrintGrid1.ShowReport).

Jarek Uher